#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
云顶之弈智能助手 - 真实API版本
需要OpenAI API密钥才能运行
"""

import os
import sys
import asyncio
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))

async def check_api_key():
    """检查API密钥配置"""
    print("检查API密钥配置...")

    # 检查环境变量
    api_key = os.getenv("OPENAI_API_KEY")
    api_base = os.getenv("OPENAI_API_BASE")

    if not api_key:
        # 检查配置文件
        config_file = project_root / "config.json"
        if config_file.exists():
            import json
            with open(config_file, 'r', encoding='utf-8') as f:
                config = json.load(f)
                api_key = config.get('openai_api_key')
                if not api_base:
                    api_base = config.get('openai_api_base')

    if api_key:
        print("API密钥已配置")
        if api_base:
            print(f"API基础URL: {api_base}")
        return True
    else:
        print("未找到API密钥")
        print("\n配置方法：")
        print("1. 运行: python setup_deepseek_api.py")
        print("2. 或手动创建 config.json 文件:")
        print('   {')
        print('     "openai_api_key": "your_deepseek_api_key",')
        print('     "openai_api_base": "https://api.deepseek.com",')
        print('     "model": "deepseek-chat"')
        print('   }')
        return False

async def simple_start():
    """启动函数"""
    print("云顶之弈智能助手 - 真实API版本")
    print("=" * 40)

    # 检查API密钥
    if not await check_api_key():
        input("\n按回车键退出...")
        return

    try:
        print("\n正在启动智能助手...")

        from agent_assistant import AgentTFTAssistant
        assistant = AgentTFTAssistant()

        # 初始化（需要真实API密钥）
        await assistant.initialize()

        # 检查初始化状态
        if assistant.is_initialized:
            print("智能助手启动成功！")
            print()
            print("使用说明：")
            print("- 直接输入您的问题")
            print("- 输入 '帮助' 查看使用指南")
            print("- 输入 '退出' 或 'q' 退出程序")
            print("- 输入 '状态' 查看系统状态")
            print("- 输入 '清空' 清空对话历史")
            print()

            # 进入交互模式
            await simple_interactive_chat(assistant)
        else:
            print("助手初始化失败 - 请检查OpenAI API密钥配置")

    except KeyboardInterrupt:
        print("\n程序被用户中断")
    except Exception as e:
        print(f"启动失败: {e}")
        print("\n可能的问题：")
        print("1. OpenAI API密钥无效")
        print("2. 网络连接问题")
        print("3. 依赖包未正确安装")
        input("\n按回车键退出...")

async def simple_interactive_chat(assistant):
    """简化交互聊天"""
    while True:
        try:
            # 获取用户输入
            user_input = input("\n请输入您的问题: ").strip()

            if not user_input:
                continue

            # 检查特殊命令
            if user_input.lower() in ['退出', 'exit', 'q', 'quit']:
                print("感谢使用，再见！")
                break

            if user_input.lower() in ['帮助', 'help']:
                print_help()
                continue

            if user_input.lower() in ['状态', 'status']:
                try:
                    assistant.show_system_status()
                except:
                    print("状态信息暂时不可用")
                continue

            if user_input.lower() in ['清空', 'clear']:
                assistant.conversation_history.clear()
                try:
                    assistant.agent_orchestrator.clear_history()
                except:
                    pass
                print("对话历史已清空")
                continue

            # 处理查询
            print("正在思考...")

            result = await assistant.process_query(user_input)

            # 显示结果
            print(f"\n回答: {result.content}")

            # 显示置信度
            confidence_text = "高" if result.confidence >= 0.8 else "中" if result.confidence >= 0.5 else "低"
            print(f"置信度: {confidence_text} ({result.confidence:.1f}/1.0)")

            # 显示额外信息
            if result.metadata:
                if result.metadata.get("tool_usage"):
                    print(f"使用工具数量: {result.metadata['tool_usage']}")
                if result.metadata.get("error"):
                    print(f"处理警告: {result.metadata['error']}")

        except KeyboardInterrupt:
            print("\n程序被用户中断")
            break
        except Exception as e:
            print(f"处理出错: {e}")
            print("请重新输入或尝试其他问题")

def print_help():
    """打印帮助信息"""
    help_text = """
使用帮助：

基本命令：
- 输入任何问题开始对话
- '帮助' - 显示此帮助信息
- '状态' - 查看系统状态
- '清空' - 清空对话历史
- '退出' 或 'q' - 退出程序

查询示例：
- "小米汽车最新发展情况"
- "云顶之弈基础规则"
- "当前版本什么阵容最强"
- "帮我分析科技发展趋势"

功能特点：
- AI自主决策工具使用
- 智能搜索和分析
- 多轮对话支持
- 实时信息获取

注意：需要有效的OpenAI API密钥才能使用所有功能
    """
    print(help_text)

if __name__ == "__main__":
    try:
        asyncio.run(simple_start())
    except KeyboardInterrupt:
        print("\n程序结束")
    except Exception as e:
        print(f"程序异常: {e}")
        input("\n按回车键退出...")